#
# tests/Makefile.am
#
# For the license, see the LICENSE file in the root directory.
#

check_PROGRAMS =

TESTS_ENVIRONMENT = \
  abs_top_testdir=`cd '$(top_srcdir)'/tests; pwd` \
  abs_top_builddir=`cd '$(top_builddir)'; pwd` \
  abs_top_srcdir=`cd '$(top_srcdir)'; pwd`

if ENABLE_TESTS

TESTS = \
	test_vtpm_proxy \
	test_tpm2_vtpm_proxy

TESTS += \
	test_commandline \
	test_ctrlchannel \
	test_ctrlchannel2 \
	test_ctrlchannel3 \
	test_ctrlchannel4 \
	test_encrypted_state \
	test_getcap \
	test_hashing \
	test_hashing2 \
	test_init \
	test_locality \
	test_migration_key \
	test_parameters \
	test_resume_volatile \
	test_save_load_encrypted_state \
	test_save_load_state \
	test_setbuffersize \
	test_volatilestate \
	test_swtpm_bios \
	test_tpm_probe \
	test_tpm12 \
	test_wrongorder \
	\
	test_print_capabilities \
	test_print_states \
	test_swtpm_setup_overwrite \
	test_swtpm_setup_file_backend \
	test_swtpm_setup_misc

TESTS += \
	test_tpm2_avoid_da_lockout \
	test_tpm2_chroot_socket \
	test_tpm2_chroot_chardev \
	test_tpm2_chroot_cuse \
	test_tpm2_ctrlchannel2 \
	test_tpm2_ctrlchannel3 \
	test_tpm2_derived_keys \
	test_tpm2_encrypted_state \
	test_tpm2_init \
	test_tpm2_file_permissions \
	test_tpm2_getcap \
	test_tpm2_locality \
	test_tpm2_hashing \
	test_tpm2_hashing2 \
	test_tpm2_hashing3 \
	test_tpm2_migration_key \
	test_tpm2_partial_reads \
	test_tpm2_print_capabilities \
	test_tpm2_print_states \
	test_tpm2_resume_volatile \
	test_tpm2_savestate \
	test_tpm2_save_load_encrypted_state \
	test_tpm2_save_load_state \
	test_tpm2_save_load_state_2 \
	test_tpm2_save_load_state_2_linear \
	test_tpm2_save_load_state_2_block \
	test_tpm2_save_load_state_3 \
	test_tpm2_save_load_state_da_timeout \
	test_tpm2_save_load_state_locking \
	test_tpm2_setbuffersize \
	test_tpm2_volatilestate \
	test_tpm2_wrongorder \
	test_tpm2_probe \
	\
	test_tpm2_swtpm_bios \
	\
	test_tpm2_ibmtss2 \
	test_tpm2_swtpm_setup_overwrite \
	test_tpm2_swtpm_setup_profile \
	test_tpm2_swtpm_setup_profile_name \
	test_tpm2_libtpms_versions_profiles

if WITH_GNUTLS
TESTS += \
	test_samples_create_tpmca \
	test_swtpm_cert \
	test_swtpm_setup_create_cert \
	test_tpm2_parameters \
	test_tpm2_swtpm_cert \
	test_tpm2_swtpm_cert_ecc \
	test_tpm2_swtpm_localca \
	test_tpm2_swtpm_localca_pkcs11.test \
	test_tpm2_swtpm_setup_create_cert

if HAVE_TCSD
TESTS += \
	test_tpm2_samples_create_tpmca.test

# Prevent concurrency between these two
test_tpm2_samples_create_tpmca.log: test_tpm2_swtpm_localca_pkcs11.log
endif # HAVE_TCSD
endif # WITH_GNUTLS
endif # ENABLE_TESTS

TEST_UTILS = \
	common \
	load_vtpm_proxy \
	test_common \
	test_cuse

EXTRA_DIST = \
	$(TESTS) \
	$(TEST_UTILS) \
	swtpm_setup.conf \
	create_certs.sh \
	data/ecpubek.pem \
	data/ecprivek.pem \
	data/issuercert.pem \
	data/pubek.pem \
	data/signkey.pem \
	data/signkey-encrypted.pem \
	data/keyfile.txt \
	data/keyfile256bit.txt \
	data/pwdfile.txt \
	data/migkey1/tpm2-volatilestate.bin \
	data/migkey1/volatilestate.bin \
	data/tpmstate1/tpm-00.permall \
	data/tpmstate1/tpm-00.volatilestate \
	data/tpmstate1/README \
	data/tpmstate2/tpm-00.permall \
	data/tpmstate2/tpm-00.volatilestate \
	data/tpmstate2/pwdfile.txt \
	data/tpmstate2/README \
	data/tpmstate2b/tpm-00.permall \
	data/tpmstate2b/tpm-00.volatilestate \
	data/tpmstate2b/pwdfile.txt \
	data/tpm2state1/tpm2-00.permall \
	data/tpm2state1/tpm2-00.volatilestate \
	data/tpm2state2/tpm2-00.permall \
	data/tpm2state2/tpm2-00.volatilestate \
	data/tpm2state2b/pwdfile.txt \
	data/tpm2state2b/tpm2-00.permall \
	data/tpm2state2b/tpm2-00.volatilestate \
	data/tpm2state2/pwdfile.txt \
	data/tpm2state3/hkey.priv \
	data/tpm2state3/hkey.pub \
	data/tpm2state3/signature.bin \
	data/tpm2state3/tpm2-00.permall \
	data/tpm2state3c/tpm2-00.volatilestate \
	data/tpm2state3c/tpm2-00.permall \
	data/tpm2state3d/tpm2-00.volatilestate \
	data/tpm2state3d/signature2.bin \
	data/tpm2state3d/tpm2-00.permall \
	data/tpm2state3b/h81000000.bin \
	data/tpm2state3b/h02000000.bin \
	data/tpm2state3b/tpm2-00.volatilestate \
	data/tpm2state3b/tpm2-00.permall \
	data/tpm2state4/tpm2-00.volatilestate \
	data/tpm2state4/tpm2-00.permall \
	data/tpm2state5/signature.bin \
	data/tpm2state5/tpm2-00.permall \
	data/tpm2state6/tpm2-00.permall \
	fileinstall \
	patches/0001-Deactivate-test-cases-accessing-rootcerts.txt.patch \
	patches/0002-Implement-powerup-for-swtpm.patch \
	patches/0003-Set-CRYPTOLIBRARY-to-openssl.patch \
	patches/0004-Store-and-restore-volatile-state-at-every-step.patch \
	patches/0005-Disable-tests-related-to-events.patch \
	patches/0010-Adjust-test-cases-for-OpenSSL-3.patch \
	patches/0012-Disable-Nuvoton-commands.patch \
	patches/libtpm.patch \
	sed-inplace \
	softhsm_setup \
	test_clientfds.py \
	test_setdatafd.py \
	test_swtpm_cert \
	_test_encrypted_state \
	_test_getcap \
	_test_hashing \
	_test_hashing2 \
	_test_init \
	_test_locality \
	_test_migration_key \
	_test_migration_key_2 \
	_test_print_capabilities \
	_test_print_states \
	_test_resume_volatile \
	_test_save_load_encrypted_state \
	_test_save_load_state \
	_test_setbuffersize \
	_test_swtpm_bios \
	_test_tpm_probe \
	_test_tpm2_avoid_da_lockout \
	_test_tpm2_derived_keys \
	_test_tpm2_encrypted_state \
	_test_tpm2_file_permissions \
	_test_tpm2_getcap \
	_test_tpm2_hashing \
	_test_tpm2_hashing2 \
	_test_tpm2_hashing3 \
	_test_tpm2_init \
	_test_tpm2_locality \
	_test_tpm2_migration_key \
	_test_tpm2_print_capabilities \
	_test_tpm2_print_states \
	_test_tpm2_probe \
	_test_tpm2_resume_volatile \
	_test_tpm2_savestate \
	_test_tpm2_save_load_encrypted_state \
	_test_tpm2_save_load_state \
	_test_tpm2_save_load_state_da_timeout \
	_test_tpm2_save_load_state_locking \
	_test_tpm2_setbuffersize \
	_test_tpm2_swtpm_bios \
	_test_tpm2_volatilestate \
	_test_tpm2_wrongorder \
	_test_volatilestate \
	_test_wrongorder \
	installed-runner.sh

testdir = $(libexecdir)/installed-tests/$(PACKAGE)

install-data-hook:
	mkdir -p $(DESTDIR)$(testdir)
	cd $(srcdir) && for file in test_config $(EXTRA_DIST); do ./fileinstall "$$file" "$(DESTDIR)$(testdir)/$$file" ; done
	echo "$(TESTS)" > $(DESTDIR)$(testdir)/tests
	$(srcdir)/sed-inplace '/SWTPM_TEST_UNINSTALLED=1/d' $(DESTDIR)$(testdir)/common

uninstall-hook:
	cd $(DESTDIR)$(testdir) && rm -f $(EXTRA_DIST) tests

check-display:
	@if test -n "$$SWTPM_EXE"; then \
		echo "*** Using SWTPM_EXE=$$SWTPM_EXE"; \
	fi
	@if test -n "$$SWTPM_BIOS"; then \
		echo "*** Using SWTPM_BIOS=$$SWTPM_BIOS"; \
	fi
	@if test -n "$$SWTPM_IOCTL"; then \
		echo "*** Using SWTPM_IOCTL=$$SWTPM_IOCTL"; \
	fi
	@if test -n "$$SWTPM_CERT"; then \
		echo "*** Using SWTPM_CERT=$$SWTPM_CERT"; \
	fi

.PHONY: syntax-check
syntax-check:
# SC2009: Consider using pgrep instead of grepping ps output.
# SC2317: (info): Command appears to be unreachable. Check usage (or ignore if invoked indirectly).
	shellcheck -e SC2009,SC2317 \
		$(TESTS) $(TEST_UTILS) $(filter _test_%,$(EXTRA_DIST)) softhsm_setup installed-runner.sh

check: check-am check-display
